-- local skynet = require "skynet"
-- local socket = require "skynet.socket"
-- --简单echo服务
-- function echo(cID, addr)
--     socket.start(cID) -- 调用socket.start(cID)才能继续读写操作
--     while true do
--         local str = socket.read(cID)
--         if str then
--             skynet.error("recv " ..str)
--             socket.write(cID, string.upper(str))
--         else
--             socket.close(cID)
--             skynet.error(addr .. " disconnect")
--             return
--         end
--     end
-- end
-- function accept(cID, addr)
--     skynet.error(addr .. " accepted")
--     skynet.fork(echo, cID, addr) --来一个连接，就开一个新的协程来处理客户端数据
-- end
-- --服务入口
-- skynet.start(function()
--     local addr = "0.0.0.0:8001"
--     skynet.error("listen " .. addr)
--     local lID = socket.listen(addr)
--     assert(lID)
--     socket.start(lID, accept) -- 收到新数据的处理方式
-- end)
-- 使用telnet测试
-- > open ip port
-- local skynet = require "skynet"
-- local socket = require "skynet.socket"
-- -- 简单echo服务
-- function echo(cID, addr)
--     socket.start(cID)
--     while true do
--         local str, endstr = socket.readline(cID)
--         -- local str, endstr = socket.readline(cID, "\n")
--         if str then
--             skynet.error("recv " .. str)
--             socket.write(cID, string.upper(str))
--         else
--             socket.close(cID)
--             if endstr then
--                 skynet.error("last recv " .. endstr)
--             end
--             skynet.error(addr .. " disconnect")
--             return
--         end
--     end
-- end
-- function accept(cID, addr)
--     skynet.error(addr .. " accepted")
--     skynet.fork(echo, cID, addr)
-- end
-- -- 服务入
-- skynet.start(function()
--     local addr = "0.0.0.0:8001"
--     skynet.error("listen " .. addr)
--     local lID = socket.listen(addr)
--     assert(lID)
--     socket.start(lID, accept)
-- end)


-- local skynet = require "skynet"
-- local socket = require "skynet.socket"

-- -- 简单echo服务
-- function echo(cID, addr)
--     socket.start(cID)
--     local str = socket.readall(cID)
--     if str then
--         skynet.error("recv " .. str)
--     end
--     skynet.error(addr .. " close")
--     socket.close(cID)
--     return
-- end

-- function accept(cID, addr)
--     skynet.error(addr .. " accepted")
--     skynet.fork(echo, cID, addr)
-- end

-- -- 服务入口
-- skynet.start(function()
--     local addr = "0.0.0.0:8001"
--     skynet.error("listen " .. addr)
--     local lID = socket.listen(addr)
--     assert(lID)
--     socket.start(lID, accept)
-- end)


-- -- 低优先级发送函数
-- local skynet = require "skynet"
-- local socket = require "skynet.socket"

-- --简单echo服务
-- function echo(cID, addr)
--     socket.start(cID)
--     while true do
--         local str = socket.read(cID)
--         if str then
--             skynet.error("recv " .. str)
--             --由于cpu处理非常快，无法看到效果，只有当cpu复核过高的时候，才会出现低优先级后发送的现象
--             socket.lwrite(cID, "l:" .. string.upper(str))
--             socket.write(cID, "h:" .. string.upper(str))
--         else
--             socket.close(cID)
--             skynet.error(addr .. " disconnect")
--             return
--         end
--     end
-- end

-- function accept(cID, addr)
--     skynet.error(addr .. " accepted")
--     --如果不开协程，那么同一时刻肯定只能处理一个客户端的连接请求
--     skynet.fork(echo, cID, addr)
-- end

-- --服务入口
-- skynet.start(function()
--     local addr = "0.0.0.0:8001"
--     skynet.error("listen " .. addr)
--     local lID = socket.listen(addr)
--     assert(lID)
--     socket.start(lID, accept)
-- end)


